#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QThread>
#include <QDebug>
#include <QPushButton>
/* 使用下面声明的WorkerThread线程类 */
class WorkerThread;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private:
    WorkerThread *workerThread;
    QPushButton *pushButton;
private slots:
    void handleResults(const QString &result);
    void pushButtonClicked();
};

/* 新建一个WorkerThread类继承于QThread */
class WorkerThread : public QThread
{
    /* 用到信号槽即需要此宏定义 */
    Q_OBJECT

public:
    WorkerThread(QWidget *parent = nullptr) {
        Q_UNUSED(parent);
    }
    /* 重写run方法，继承QThread的类，只有run方法是在新的线程里 */
    void run() override {
        QString result = "线程开启成功";
        /* 这里写上比较耗时的操作 */
        // ...
        // 延时2s，把延时2s当作耗时操作
        sleep(2);

        /* 发送结果准备好的信号 */
        emit resultReady(result);
    }
signals:
    /* 声明一个信号，译结果准确好的信号 */
    void resultReady(const QString &s);
};
#endif // MAINWINDOW_H
